10 simulated users executing back to back sessions. Warmup or cooldown sessions (that are desaturated) start before or end after the vertical dotted line. Note that narrower event bars mean better performance.

39 maintenance sessions ordered from fastest to slowest completion time. The red line marks how long the original recording session took to complete (~41s). Sessions should end around the same time as each other for consistent behavior.

Each session is represented with a line that cascades downward from each event. As time progresses, the line will move to the right. Consistent behavior will be represented with parallel lines, whereas inconsistent behavior will have lines jut arbitrarily to the right. Warmup and cooldown sessions are included as grey lines.

Total HTTP and supporting files (JS/CSS) latency (load time) is displayed for each session and run combination. Each vertical bar represents the amount of time a session's Shiny application had to wait before it is able to ask the server for information. A resonable amount of time to wait as been set to 5s. Warmup and cooldown sessions are displayed outside the dotted maintenance period lines.

Maximum WebSocket latency (calculation time) is displayed for each session and run combination. The maximum time is shown to convey the longest amount of time a user would have to wait for a response from the Shiny server. Warmup and cooldown sessions are displayed outside the dotted maintenance period lines.

Event plots are arranged by the slowest maximum time within each plot.

slowest maximum times

Event plots are arranged by the slowest minimum time within each plot.

slowest minimum times

Label Max time Min time
Event 15) Get: ion.rangeSlider.min.js 23.556 0.132
Event 21) Get: respond.min.js 21.006 0.105
Event 5) Get: shiny.css 20.959 0.104
Event 3) Get: jquery.min.js 20.879 0.171
Event 10) Get: selectize.bootstrap3.css 20.841 0.102
Event 1) Get: Homepage 20.400 0.493
Event 13) Get: flatly.min.css 19.870 0.209
Event 12) Get: bootstrap.min.css 18.781 0.198
Event 31) Initialize Session 18.435 0.011
Event 9) Get: shinyBS.css 17.446 0.074
Event 2) Get: json2-min.js 17.441 0.103
Event 42) Updated: A 16.702 1.667
Event 19) Get: bootstrap.min.js 16.176 0.138
Event 18) Get: selectize.min.js 16.016 0.135
Event 38) Updated: A 15.856 1.732
Event 46) Updated: B 15.306 1.548
Event 49) Updated: B 15.276 1.286
Event 4) Get: babel-polyfill.min.js 13.221 0.176
Event 20) Get: html5shiv.min.js 13.181 0.101
Event 34) Updated: A 11.749 1.707
Event 8) Get: ion.rangeSlider.skinShiny.css 11.434 0.108
Event 36) Updated: B 9.411 1.444
Event 7) Get: ion.rangeSlider.css 9.048 0.104
Event 16) Get: strftime-min.js 8.956 0.104
Event 11) Get: font-awesome.min.css 8.392 0.112
Event 6) Get: shiny.min.js 7.460 0.160
Event 17) Get: shinyBS.js 5.830 0.104
Event 32) Updated: A, B, B_downloadData, A_downloadData 2.190 0.070
Event 23) Get: shiny-server-client.min.js 0.294 0.151
Event 22) Get: sockjs-0.3.4.min.js 0.146 0.097
Event 14) Get: shiny-server.css 0.124 0.090
Event 26) Start Session 0.077 0.059
Event 24) Get: Shiny Token 0.075 0.060
Event 25) Get: Connection Information 0.073 0.062
Event 30) Updated: 0.070 0.027
Event 27) Start Connection 0.003 0.000

Event plots are arranged by the largest slope magnitude found when fitting a line to each run.

largest slope magnitudes

Event plots are arranged by the largest intercept magnitude found when fitting a line to each run

largest intercept magnitudes

Event plots are arranged by the largest error magnitude found when fitting a line to each run.

largest error magnitudes

Label Slope Intercept Error
Event 15) Get: ion.rangeSlider.min.js 5.047 -13.486 11.534
Event 13) Get: flatly.min.css 3.385 -8.380 4.554
Event 12) Get: bootstrap.min.css 2.827 -8.128 5.809
Event 1) Get: Homepage 2.769 -5.208 11.764
Event 3) Get: jquery.min.js 2.572 -6.999 11.158
Event 31) Initialize Session 2.433 -9.216 8.187
Event 4) Get: babel-polyfill.min.js 2.133 -5.297 8.081
Event 2) Get: json2-min.js 2.128 -5.066 8.344
Event 10) Get: selectize.bootstrap3.css 1.986 -5.255 13.186
Event 5) Get: shiny.css 1.791 -4.434 15.543
Event 49) Updated: B 1.783 -3.933 4.948
Event 9) Get: shinyBS.css 1.702 -4.080 9.609
Event 42) Updated: A 1.342 -1.907 9.887
Event 18) Get: selectize.min.js 1.259 -3.325 12.414
Event 8) Get: ion.rangeSlider.skinShiny.css 1.248 -2.819 9.268
Event 34) Updated: A 0.978 -0.966 4.887
Event 21) Get: respond.min.js 0.964 -2.081 17.787
Event 36) Updated: B 0.919 0.539 3.572
Event 19) Get: bootstrap.min.js 0.783 -1.275 13.536
Event 20) Get: html5shiv.min.js 0.709 -0.620 9.904
Event 16) Get: strftime-min.js 0.633 -0.147 6.888
Event 46) Updated: B 0.620 1.679 9.289
Event 38) Updated: A 0.490 2.947 9.482
Event 7) Get: ion.rangeSlider.css 0.378 -0.137 7.485
Event 11) Get: font-awesome.min.css 0.276 0.134 6.879
Event 32) Updated: A, B, B_downloadData, A_downloadData 0.134 -0.390 1.504
Event 6) Get: shiny.min.js 0.134 0.432 6.425
Event 17) Get: shinyBS.js 0.097 0.638 4.851
Event 30) Updated: -0.002 0.047 0.033
Event 22) Get: sockjs-0.3.4.min.js -0.002 0.123 0.027
Event 23) Get: shiny-server-client.min.js 0.002 0.169 0.117
Event 14) Get: shiny-server.css 0.001 0.094 0.027
Event 25) Get: Connection Information -0.001 0.068 0.008
Event 24) Get: Shiny Token 0.000 0.063 0.010
Event 26) Start Session -0.000 0.065 0.014
Event 27) Start Connection -0.000 0.002 0.001